
/*给你一个由若干 0 和 1 组成的字符串 s ，请你计算并返回将该字符串分割成两个 非空 子字符串（即 左 子字符串和 右 子字符串）所能获得的最大得分。
「分割字符串的得分」为 左 子字符串中 0 的数量加上 右 子字符串中 1 的数量。*/

import java.util.Scanner;

public class MaxScore {
    public static int maxScore(String s) {
        int n = s.length();
        int totalOnes = 0;
        for (int i = 0; i < n; i++) {
            if (s.charAt(i) == '1') {
                totalOnes++;
            }
        }

        int leftOnes = 0;
        int maxScore = 0;
        for (int i = 1; i < n; i++) {
            if (s.charAt(i - 1) == '1') {
                leftOnes++;
            }

            int score = i + totalOnes - 2 * leftOnes;
            if (score > maxScore) {
                maxScore = score;
            }
        }
        return maxScore;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        System.out.print("请输入由0和1组成的字符串: ");
        String s = scanner.nextLine();
        int result = maxScore(s);
        System.out.println("最大得分: " + result);
        scanner.close();

    }
}
